Salesforce Apex vs Synrc FormalTalk
[Biased] порівняльна характеристика Salesforce Apex та FormalTalk.
Мова для CRM/ERP системи
Якщо класифікувати FormalTalk, як мову згідно номенклатури, яка використовується в моій Енциклопедії Мов Програмування, то FormalTalk займає місце серед когорти мов які використовуються для промислових ERP систем. Візьме до прикладу Salesforce Apex (не путати з Oracle Apex, але якшо взяти і його, то нічого в статті не зміниться) і порівняємо її повністю імперативну мову Apex з вбудованою підмовою даних SOQL (щось подібне до LINQ).
Основне завдання цих недолугих мов, які не є мовами програмування загального призначення полягає в управлінні типовими специфікаціями та логікою складних продуктів з важкими рантаймами, а не для створення продуктів та їх лінковки в більш низькорівневій та загальній манері.
Salesfore Apex разом з вбудованим SOQL
При розробці FormalTalk враховувалась 10-річна практика програмування на бібліотеках N2O, яка формалізована у вигляді математичної моделі в System-F та MLTT як специфікація N2O.PRO. Оскільки N2O.PRO покриває модель Закмана, то і мова FormalTalk є своєрідним офіційним скриптом який розповсюджується на усі рівні ISO 42010.
Synrc FormalTalk ISO 42010 BPE
Відмінності між мовами
На відміну від Salesforce Apex, FormalTalk є декларативною мовою, що означає що ви кажете, що ви хочете дістати (навіть якщо це послідовність операцій), а не що робити в якій послідовності. Однак для практики, а саме для перепакування змінних та мінімального набору утилітарних фунцій роботи з записами, списками, словниками, мапами. Мова містить єдиний імперативний оператор присвоювання та обмежені можливості виклику функцій з повним контролем рекурсії.
Мотивація скриптових мов для облікових систем
Головна мотивація, якою користуються компанії при розробці таких мов програмування для масивних ран-таймів — це уніфікація інтерфейсів і повний контроль над усіма перетвореннями, які можуть знадобитися в подальшому (наприклад трансляція в інші мови), а також спосіб перебудовування графічного інтерфейсу та моделі даних системи в реальному часі, що є невід'ємною умовою на тендерах ERP/CRM систем, що було започатковано в таких система як BAAN.
Ці мови є недолугими тому, що вони є в сутності обгортками над реальною системою, і повинні бути зрозумілі операторам, бажано з примітивними синтаксиами. Але LISP та спеціалізовані мови погано продаються, тому будь-яка проста мова для працюючого продукту може виявитися більш ефективною ніж трата часу для пошуку найоптимальнішої мови чи робота у її відсутності.
Контроль над подальшими транформаціями з мови FormalTalk у формальні лямюда мови як System F або фібраційні мови CoC або MLTT, а також обмеження та контроль рекурсії та всіх викливів є такою однією з головних технічних мотивацій, що призведе до драматичного усунення помилок при програмуванні логіки. Перше — транформації — є тим, що відкриває ворота для матаметатичної верифікації декларативної логіки яка записана на мові FormalTalk. Друге — контрольовані виклики та рекурсія — є тим, що дозволяє більш безпосередньо транслювати програми у формальні фібраційні мови.
Мова для веб-фреймворку
Мова FormalTalk може бути одночасно прокласифікована як спеціалізована мова для побудови сайтів, тобто DSL для веб-фреймворка зі своїм лексером та парсером, у цьому сенсі її можна порівняти з UrWeb.
UrWeb
У попередній статті ми розказали про BPE, FORM, KVS підмови FormalTalk, а тут покажемо як виглядає класичний приклад N2O.SAMPLE на мові FormalTalk
Synrc FormalTalk ISO 42010 NITRO